import request from '@/utils/request';

const API_BASE_URL = import.meta.env.VITE_API_BASE_URL || '';

/**
 * 获取所有食物列表 (根据API文档，此接口主要用于排序，功能较少，推荐使用 searchFoods)
 * @param {object} params - 查询参数
 * @param {string} [params.sortBy] - 排序字段 (name, calories, protein, fat, carbohydrate, createdAt)
 * @param {string} [params.sortOrder] - 排序方式 (asc, desc)
 * @returns {Promise<object>}
 */
export function getAllFoods(params) {
  return request({
    url: `${API_BASE_URL}/foods/all`,
    method: 'get',
    params
  });
}

/**
 * 搜索和筛选食物
 * @param {object} params - 查询参数
 * @param {string} [params.name] - 食物名称 (模糊搜索)
 * @param {string} [params.categoryId] - 食物分类ID
 * @param {boolean} [params.isVerified] - 是否验证
 * @param {string} [params.nutrient] - 营养素类型
 * @param {number} [params.nutrientMin] - 营养素最小值
 * @param {number} [params.nutrientMax] - 营养素最大值
 * @param {string} [params.sortBy] - 排序字段
 * @param {string} [params.sortOrder] - 排序方式
 * @param {number} [params.page] - 页码
 * @param {number} [params.limit] - 每页数量
 * @returns {Promise<object>}
 */
export function searchFoods(params) {
  return request({
    url: `${API_BASE_URL}/foods/search`,
    method: 'get',
    params
  });
}

/**
 * 获取食物详情
 * @param {string} foodId - 食物ID
 * @returns {Promise<object>}
 */
export function getFoodDetail(foodId) {
  return request({
    url: `${API_BASE_URL}/foods/${foodId}`,
    method: 'get'
  });
}

// Helper function to construct full image URL if needed elsewhere
export function getFullFoodImageUrl(imagePath) {
  if (!imagePath) return '';
  // VITE_SERVER_ROOT_URL should be the root, e.g., http://localhost:3000
  const SERVER_ROOT_URL = import.meta.env.VITE_SERVER_ROOT_URL || API_BASE_URL.replace('/api', ''); 
  if (imagePath.startsWith('http://') || imagePath.startsWith('https://')) {
    return imagePath;
  }
  // Ensure imagePath starts with a slash if it's a relative path from the server root
  const correctedImagePath = imagePath.startsWith('/') ? imagePath : `/${imagePath}`;
  return `${SERVER_ROOT_URL}${correctedImagePath}`;
} 

/**
 * 获取所有食物分类
 * @param {object} params - 查询参数
 * @param {boolean} [params.activeOnly] - 是否只返回活跃状态的分类，默认为false
 * @returns {Promise<object>}
 */
export function getAllFoodCategories(params) {
  return request({
    url: `${API_BASE_URL}/foods/categories`,
    method: 'get',
    params
  });
} 

/**
 * 添加新的食物记录
 * @param {FormData} foodData - 食物数据 (使用 FormData 以支持图片上传)
 * @returns {Promise<object>}
 */
export function addFood(foodData) {
  return request({
    url: `${API_BASE_URL}/foods`,
    method: 'post',
    data: foodData,
    headers: {
      'Content-Type': 'multipart/form-data' // 必须设置，如果发送的是 FormData
    }
  });
} 

/**
 * 删除指定的食物记录
 * @param {string} foodId - 食物ID
 * @returns {Promise<object>}
 */
export function deleteFood(foodId) {
  return request({
    url: `${API_BASE_URL}/foods/${foodId}`,
    method: 'delete'
  });
} 